package com.eimf.saf.security.sys;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.eimf.saf.base.service.SystemParmService;
import com.eimf.saf.base.util.BaseCache;
import com.eimf.saf.base.util.SpringContext;
import com.eimf.saf.common.service.DictService;
import com.eimf.saf.common.service.InternationService;
import com.eimf.saf.common.util.CommonCache;

/**
 * @author eden
 * @date 2013-11-13 下午6:02:32
 * @Description: 整个平台启动和销毁的支撑类
 */
@Component
public class SystemMgr
{

    private static Log logger = LogFactory.getLog(SystemMgr.class);

    @Autowired
    private DictService dictService;

    @Autowired
    private InternationService internationService;

    @Autowired
    private SystemParmService systemParmService;

    @SuppressWarnings("unused")
    @Autowired
    private SpringContext context;// 不能删除

    /**
     * 平台启动初始化加载的配置或者初始化的数据
     */
    @PostConstruct
    public void init()
    {
        SystemMgr.logger.info("平台启动初始化服务开始");
        this.initCfgs();

        this.initDatas();

        SystemMgr.logger.info("平台启动初始化服务结束");
    }

    /**
     * 销毁系统级别的资源
     */
    @PreDestroy
    public void destroy()
    {
        SystemMgr.logger.info("开始资源清理....................................................");

        SystemMgr.logger.info("资源清理完毕");
    }

    /**
     * 初始化的系统配置
     */
    private void initCfgs()
    {

    }

    /**
     * 将常用的数据加载到内存中。
     */
    public void initDatas()
    {

        /** 加载数据字典优先加载后面其它数据 */
        CommonCache.initInternationInfo(this.internationService.findAllInternation());
        CommonCache.initDict(this.dictService.findAllDictList());
        BaseCache.initSystemParm(this.systemParmService.findAllSystemParmList());
    }
}
